package com.digitalchina.lxnsy.wxapi;

import com.apkfuns.logutils.LogUtils;
import com.digitalchina.lxnsy.toolkit.EncryptUtil;

import java.math.BigDecimal;

/**
 * ================================================
 * 项目名称：BigData
 * 类描述：
 * 包名：com.digitalchina.bigdata.wxapi
 * 创建人：郑皓
 * 创建时间：2016/10/18 14:03
 * 修改备注：
 * ================================================
 */
public class WXPay {


    /**
     * 获取预支付交易单
     *
     * @param orderNo 订单号
     * @param price 价格
     * @return 获取微信统一订单参数
     */
    public static String getWeChatOrder(String orderNo, BigDecimal price, String notifyUrl) {

        String nonceString = WXUtils.getNonceStr();
        String ipAddress = WXUtils.getLocalIpAddress();

        StringBuffer wxsb = new StringBuffer();

        wxsb.append("appid=" + WXKeys.WX_APP_ID);
        wxsb.append("&body=" + WXKeys.WX_BODY);
        wxsb.append("&mch_id=" + WXKeys.WX_PARTNER_ID);
        wxsb.append("&nonce_str=").append(nonceString);
        wxsb.append("&notify_url=" + notifyUrl);
        wxsb.append("&out_trade_no=").append(orderNo); // 商户订单号
        wxsb.append("&spbill_create_ip=").append(ipAddress);
        wxsb.append("&total_fee=").append(price.multiply(BigDecimal.valueOf(100)).intValue()); // 商品价格
        wxsb.append("&trade_type=" + WXKeys.WX_TRADE_TYPE);
        wxsb.append("&key=" + WXKeys.WX_API_KEY);  //微信支付商户密钥
        LogUtils.e(wxsb);

        //MD5签名
        String sign = EncryptUtil.MD5(wxsb.toString()).toUpperCase();
        LogUtils.e(sign);

        //组装发送信息
        StringBuffer wxparam = new StringBuffer();
        wxparam.append("<xml>");
        wxparam.append("<appid>" + WXKeys.WX_APP_ID + "</appid>");
        wxparam.append("<body>" + WXKeys.WX_BODY + "</body>");
        wxparam.append("<mch_id>" + WXKeys.WX_PARTNER_ID + "</mch_id>");
        wxparam.append("<nonce_str>").append(nonceString).append("</nonce_str>");
        wxparam.append("<notify_url>" + notifyUrl + "</notify_url>");
        wxparam.append("<out_trade_no>").append(orderNo).append("</out_trade_no>");
        wxparam.append("<spbill_create_ip>").append(ipAddress).append("</spbill_create_ip>");
        wxparam.append("<total_fee>").append(price.multiply(BigDecimal.valueOf(100)).intValue()).append("</total_fee>");
        wxparam.append("<trade_type>" + WXKeys.WX_TRADE_TYPE + "</trade_type>");
        wxparam.append("<sign>").append(sign).append("</sign>");
        wxparam.append("</xml>");
        LogUtils.e(wxparam);

        return wxparam.toString();

    }


}
